package com.arthur.gao.springbootwebsocket.h5.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 *
 * 实现接口来配置Websocket请求的路径和拦截器。
 * Created by gaopan on 2019-04-22 16:35
 */

@Configuration
@EnableWebSocket //开启注解接收和发送消息
public class WebSocketH5Config implements WebSocketConfigurer {

//    @Bean
//    public ServerEndpointExporter serverEndpointExporter() {
//        return new ServerEndpointExporter();
//    }

    /**
     * 这是一个核心实现方法，配置websocket入口，允许访问的域、注册Handler、定义拦截器
     * 客户端通过“/myHandler/{ID}”直接访问Handler核心类，进行socket的连接、接收、发送等操作，
     * 这里由于还加了个拦截器，所以建立新的socket访问时，都先进来拦截器再进去Handler类，
     * “new WebSocketInterceptor()”是我实现的拦截器，“new MyHandler()”是我实现的一个Handler类。
     *
     * @param registry
     */
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
	//handler是webSocket的核心，配置入口
	registry.addHandler(new MyHandler(), "/myHandler/{ID}").setAllowedOrigins("*").addInterceptors(new WebSocketInterceptor());

    }

}
